package com.pic.mgt.monitor.physicalmonitor;

import java.io.File;

import com.pic.mgt.monitor.physicalmonitor.FileMonitor.FileMonitorEvent;

public class MonitoredFile {
	private FileMonitorEvent fileChangedEvent = null;
	private File changedFile = null;
	private boolean isDirectory = true;
	public int retryTimes = 0;
			
	MonitoredFile() {
		
	}
	
	/**
	 * 
	 * @param absolutePath absolutePath，絕對路徑(含檔名)
	 * @param fileChangedEvent fileChangedEvent
	 * @param isDirectory 是否為目錄
	 */
	MonitoredFile(String absolutePath, FileMonitorEvent fileChangedEvent, boolean isDirectory) {
		this(absolutePath, fileChangedEvent);
		
		this.isDirectory = isDirectory;
	}
	
	/**
	 * 建式子 
	 * @param absolutePath，絕對路徑(含檔名)
	 * @param fileChangedEvent
	 */
	MonitoredFile(String absolutePath, FileMonitorEvent fileChangedEvent) {
		/*
		 *  absolutePath 有可能 會為 null。
		 *  (1) 若 fileChangedEvent 為 Overflow 則 absolutePath 會為 null。
		 *  (2) 在 Linux 平台下並使用 InotifyFileMonitor(Inotify) 作檔案監控，
		 *  	會因事件的類型，absolutePath 有可能會為 null。
		 */
		if (absolutePath != null) {
			changedFile = new File(absolutePath);
		}
		this.fileChangedEvent = fileChangedEvent;		
	}
	
	public FileMonitorEvent getFileChangedEvent() {
		return fileChangedEvent;
	}
	public File getChangedFile() {
		return changedFile;
	}
	
	/**
	 * 變動的目標是否為目錄,若否則為檔案。(注意：此值只有在 Linux 平台下才有效，若為
	 * Windows 平台則 always 為 true)
	 * @return
	 */
	public boolean isDirectory() {
		return isDirectory;
	}
}
